package pe.gob.pj.sri.dao.imp;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Repository;
import pe.gob.pj.sri.bean.Departamento;
import pe.gob.pj.sri.dao.DepartamentoDao;

@Repository("DepartamentoDaoImp")
public class DepartamentoDaoImp extends JdbcDaoSupport implements DepartamentoDao{

	
	public List<Departamento> listarDepartamento() throws Exception {
		StringBuilder consulta=new StringBuilder();
		
		consulta.append("SELECT iddepartamento, nombre, descripcion FROM departamento");
		
		List<Map<String,Object>> listaOpcion = (List<Map<String,Object>>)getJdbcTemplate().queryForList(consulta.toString());
		
		List<Departamento> lista=new ArrayList<Departamento>();
		
		Departamento deparatamentoLis=null;
		
		
		for (Map<String,Object> departamento: listaOpcion) {
			deparatamentoLis=new Departamento();
			deparatamentoLis.setIdDepartamento(departamento.get("iscargo").toString());
			deparatamentoLis.setNombre(departamento.get("nombre").toString());
			deparatamentoLis.setDescripcion(departamento.get("descripcion").toString());
			lista.add(deparatamentoLis);
		}
		
		return lista;
	}

	public Departamento obtenerDepartamento(String id) throws Exception {
		// TODO Auto-generated method stub
		Departamento d = null;
		try {
			String query = "SELECT iddepartamento, nombre , descripcion FROM departamento WHERE iddepartamento =?   ";
			Map<String, Object> objeto = (Map<String, Object>) getJdbcTemplate()
					.queryForMap(query, id);
			if (objeto != null) {
				System.out.println("3. El objeto no es nulo");
				d = new Departamento();
				d.setIdDepartamento(objeto.get("iddepartamento").toString());
				d.setDescripcion(objeto.get("descripcion").toString());
				d.setNombre(objeto.get("nombre").toString());
			}
			return d;
		} catch (Exception e) {
			return null;
		}
	}

	public boolean crearDeparamento(Departamento d) throws Exception {
		// TODO Auto-generated method stub
		try {
			String query = "INSERT INTO departamento (iddepartamento,nombre,descripcion) "
					+ "VALUES ('"
					+ d.getIdDepartamento()
					+ "','"
					+ d.getNombre()
					+ "','"
					+ d.getDescripcion()
					+ "')";
			getJdbcTemplate().execute(query);
			return true;
		} catch (Exception e) {
			return false;
		}
	}

	public boolean modificarDepartamento(Departamento d) throws Exception {
		// TODO Auto-generated method stub
		try {
			String query = "UPDATE departamento" + "SET nombre= '" + d.getNombre()
					+  "', descripcion='"+ d.getDescripcion() +
					"' WHERE iddepartamento='" + d.getIdDepartamento() + "'";
			System.out.println(query);
			getJdbcTemplate().execute(query);
			return true;
		} catch (Exception e) {
			return false;
		}
	}

	public boolean eliminarDepartamento(Departamento d) throws Exception {
		try {
			String query = "DELETE " + "FROM departemento " + "WHERE iddepartamento="
					+ d.getIdDepartamento();

			getJdbcTemplate().execute(query);
			return true;
		} catch (Exception e) {
			return false;
		}
	}

}
